// pages/courses/tcs/ai/ai.js
Page({
  data: {
    messages: [],         // 存储对话消息
    inputValue: '',       // 输入框内容
    loading: false,       // 是否正在加载
    scrollTop: 0,         // 滚动位置
    apiUrl: 'http://localhost:8080/api/ai/chat'  // 后端接口地址
  },

  onLoad() {
    // 页面加载时的初始化操作
  },

  // 输入框内容变化
  onInputChange(e) {
    this.setData({
      inputValue: e.detail.value
    });
  },

  // 发送消息
  async sendMessage() {
    const { inputValue, loading, messages, apiUrl } = this.data;
    
    // 验证输入（现在这个return在函数内部了）
    if (!inputValue.trim() || loading) return;
    
    // 添加用户消息到列表
    const userMessage = { role: 'user', content: inputValue.trim() };
    const newMessages = [...messages, userMessage];
    
    this.setData({
      messages: newMessages,
      inputValue: '',
      loading: true
    });
    
    this.scrollToBottom();
    
    try {
      // 调用后端API
      const res = await new Promise((resolve, reject) => {
        wx.request({
          url: apiUrl,
          method: 'POST',
          data: { message: inputValue.trim() },
          header: { 'Content-Type': 'application/json' },
          timeout: 200000000,
          success: resolve,
          fail: (err) => reject(new Error(`网络请求失败：${err.errMsg}`))
        });
      });
      
      // 处理响应
      if (res.statusCode === 200) {
        const responseData = res.data;
        if (responseData.success) {
          const aiMessage = { role: 'assistant', content: responseData.reply };
          this.setData({ messages: [...newMessages, aiMessage], loading: false });
          this.scrollToBottom();
        } else {
          throw new Error(responseData.error || '获取AI回复失败');
        }
      } else {
        throw new Error(`请求失败，状态码: ${res.statusCode}`);
      }
    } catch (error) {
      console.error('发送消息失败:', error);
      wx.showToast({
        title: error.message || '发送失败，请重试',
        icon: 'none',
        duration: 3000
      });
      this.setData({ loading: false });
    }
  },

  // 滚动到最底部
  scrollToBottom() {
    setTimeout(() => {
      const query = wx.createSelectorQuery();
      query.select('.message-list').boundingClientRect();
      query.select('.chat-container').boundingClientRect();
      query.exec((res) => {
        if (res && res.length >= 2) {
          this.setData({
            scrollTop: res[0].height - res[1].height + 100
          });
        }
      });
    }, 100);
  }
});
